package com.wyix.utils;


import java.lang.reflect.Constructor;

/**
 * 构造方法反射操作类（支持私有构造）
 */
public class ConstructorAccessor {
    // 通过无参构造创建实例（支持私有）
    public static <T> T createInstance(Class<T> clazz) throws Exception {
        Constructor<T> constructor = clazz.getDeclaredConstructor();
        constructor.setAccessible(true);
        return constructor.newInstance();
    }

    // 通过有参构造创建实例（支持私有）
    public static <T> T createInstance(Class<T> clazz, Class<?>[] paramTypes, Object... args) throws Exception {
        Constructor<T> constructor = clazz.getDeclaredConstructor(paramTypes);
        constructor.setAccessible(true);
        return constructor.newInstance(args);
    }
}